home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-05-01 | 31.1 KB | 805 lines | [TEXT/MPS ] |
- /*
- File: FileManager.idl
-
- Contains: FileManager Interface
-
- Version: Technology: System 8
- Release: Universal Interfaces 3.0d3 on Copland DR1
-
- Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
-
- Bugs?: If you find a problem with this file, send the file and version
- information (from above) and the problem description to:
-
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
- */
- #ifndef __FILEMANAGER_IDL__
- #define __FILEMANAGER_IDL__
-
- #include <somobj.idl>
- #include <somcls.idl>
-
- #ifndef __FILEMANAGERTYPES_IDL__
- #include <FileManagerTypes.idl>
- #endif
- #ifndef __FILES_IDL__
- #include <Files.idl>
- #endif
- #ifndef __FINDER_IDL__
- #include <Finder.idl>
- #endif
-
- #ifdef __SOMIDL__
-
- /* You can use FileManager.h or FileManagerSPI.h, but not both */
- #ifndef _FILEMANAGERSPI__
- #if FOR_SYSTEM8_PREEMPTIVE
- /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>> F o u n d a t i o n D e f i n i t i o n s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
- /*
- ****************************************************************************
- CONSTANTS & TYPES
- ****************************************************************************
- */
- typedef UInt32 FSInfoVersion;
-
- typedef UInt32 FSPathnameType;
-
- typedef OptionBits FSFileFlags;
-
- typedef SOMLargeStruct FSFileInformation; /* Derived from a struct of 84 bytes in size */
-
- typedef OpaquePtr FSFileInformationPtr; /* Substituted OpaquePtr for “FSFileInformation*” */
-
- typedef OptionBits FSFolderFlags;
-
- typedef SOMLargeStruct FSFolderInformation; /* Derived from a struct of 68 bytes in size */
-
- typedef OpaquePtr FSFolderInformationPtr; /* Substituted OpaquePtr for “FSFolderInformation*” */
-
- typedef OptionBits FSVolumeFlags;
-
- typedef SOMLargeStruct FSVolumeInformation; /* Derived from a struct of 104 bytes in size */
-
- typedef OpaquePtr FSVolumeInformationPtr; /* Substituted OpaquePtr for “FSVolumeInformation*” */
-
- typedef SOMLargeStruct FSObjectInformation; /* Derived from a struct of 260 bytes in size */
-
- typedef OpaquePtr FSObjectInformationPtr; /* Substituted OpaquePtr for “FSObjectInformation*” */
-
- /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C O N T A I N E R S <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
- /*
- ****************************************************************************
- OBJECTS
- ****************************************************************************
- */
- /*
- Function: FSObjectRefClone
- Purpose: Return a copy of an FSObjectRef such that the copy also needs to be disposed.
- Inputs:
- object_t The object ref to be cloned.
- Outputs:
- clone_o Copy of object_t.
- Notes:
- The value returned is the same value passed as input in object_t. This call
- would typically be used to balance a future call to FSObjectRefDispose. Some
- examples where it might be used:
- • A called procedure needs to save an FSObjectRef for future use, but the
- calling conventions dictate that the caller is responsible for disposing
- of the ref. The called function could call FSObjectRefClone to make its
- copy. The caller can safely dispose of the ref, yet the callee can use
- the ref until doing its own dispose.
- • In object-oriented programming, an object could be passed an FSObjectRef
- in its constructor. The destructor would be expected to dispose the ref,
- but so would the routine that created the object. FSObjectRefClone could
- be used in the constructor.
-
- The returned FSObjectRef is registered to the calling process (as must object_t).
- */
- /*
- Function: FSObjectRefDispose
- Purpose: Dispose of an FSObjectRef previously returned to a process.
- Inputs:
- object_t The object ref to be disposed.
- Outputs:
- Notes:
- A process must dispose of all FSObjectRefs returned to it. The FSObjectRefs
- may be returned as explicit output parameters, or as properties. If a ref
- is returned several times for a given object, it must be disposed for each
- time it was returned.
-
- When all refs to a given object are disposed, the File Manager will dispose
- of any resources it allocated in order to operate on that object. All refs
- for a process will be automatically disposed upon process termination.
-
- For refs returned as properties (especially when iterating over muliple
- objects), the FSObjectRefDisposeBulk call may be more convenient.
- */
- /*
- Function: FSObjectFlush
- Purpose: Flushes any data cached by the File Manager for the given object.
- Inputs:
- object_t The object to be flushed.
- Outputs:
- Notes:
- If object_t is a file, then any data written to that file (via a stream or backing store,
- regardless of the process that opened the stream or backing store) will be written by the
- File Manager to any underlying device. If object_t is a volume, then any data written to
- any file on that volume will be flushed.
-
- Any change to properties of object_t will be flushed (regardless of the object's type).
-
- Data about the object (or contained in the object) may still reside in the File Manager's
- caches, but any changes will have been written out by the File Manager. Note that the
- underlying device's driver, or the device itself, may cache some data, so the File Manager
- cannot guarantee that all data has actually been written to the underlying media.
-
-
-
- */
- /*
- Function: FSObjectRefRegister
- Purpose: Allow an FSObjectRef to be used by another process.
- Inputs:
- senderObject_t The object ref.
- receiverPid_i The other process that will be using senderObject_t.
- Outputs:
- Notes:
- This call allows one process to send an FSObjectRef to another process
- such that the other process can use the FSObjectRef itself. The process
- specified by receiverPid_i must also dispose of senderObject_t. The File
- Manager acts as if senderObject_t has been returned to receiverPid_i.
-
-
-
-
-
- You might use this call if you have several processes where one process
- (typically a server of some kind) obtains FSObjectRefs for use by other
- processes (typically clients of that server). If the other process (as
- specified by receiverPid_i) won't actually call the File Manager with
- that FSObjectRef, then it doesn't need to be registered to that process.
-
- It would also be possible to have the server process make all of the
- calls to the File Manager. FSObjectRefs could still be passed between
- client and server, but if the clients never use the refs directly, then
- there would be no need to register the refs to those clients. (But beware:
- the server would still be responsible for disposing of all refs returned to
- it; the server would probably have some cleanup and disposal to do if one
- of its client processes were to terminate.)
- */
- /*
- ============================================================================
- Volume Sets
- ============================================================================
- */
- /*
- Function: FSVolumeSetGetInformation
- Purpose: Returns an FSObjectRef for a Volume Set specified by an
- FSVolumeSetObjID.
- Inputs:
- volumeSet_t The volume set.
- Outputs:
- object_o Object ref for the volume set.
- includesBootVolume_o True if the volume set includes the boot volume.
- Notes:
- There is currently only one volume set. In the future there could be others
- (perhaps file servers; perhaps to support multiple local users).
- */
- /*
- ============================================================================
- Folders
- ============================================================================
- */
- /*
- Function: FSFolderCreate
- Purpose: Create a new named folder within a specified folder
- Inputs:
- containerRef_t The object ref of the parent of the new folder.
- folderName_i The name of the new folder as a _persistent_ TextObject.
- Outputs:
- folderRef_o The object ref of the new folder.
- Notes:
- An error will be returned if the folder already exists.
- */
- /*
- ============================================================================
- Files
- ============================================================================
- */
- /*
- Function: FSFileCreate
- Purpose: Create a new named file within a specified folder
- Inputs:
- containerRef_t The object ref of the parent of the new file.
- fileName_i The name of the new file as a _persistent_ TextObject.
- fileCreator_i The new file's Finder creator.
- fileType_i The new file's Finder type.
- Outputs:
- fileRef_o The object ref of the new file.
- Notes:
- An error will be returned if the file already exists.
- */
- /*
- ============================================================================
- Folder and File Requests
- ============================================================================
- */
- /*
- Function: FSObjectDelete
- Purpose: Deletes an object. The FSObjectRef is NOT disposed; you must still dispose it yourself.
- Further attempts to use the ref will return errors (such as E_ObjectNotFound).
-
- Inputs:
- object_t The object to be deleted.
- Outputs:
- */
- /*
- Function: FSObjectMoveRename
- Purpose: Move a file or folder to a new folder and (optionally) rename it.
- Inputs:
- sourceObjectRef_t The object ref of the file or folder to move.
- destContainerRef_i The object ref of the new parent folder.
- newObjectName_i The new name for the moved file or folder (optional).
- Outputs:
- Notes:
- An error will be returned if another file or folder exists in the
- folder specified by destContainerRef_i which has the same name as
- sourceObjectRef_t.
- */
- /*
- Function: FSObjectRename
- Purpose: Rename a file or folder.
- Inputs:
- sourceObjectRef_t The object ref of the file or folder to rename.
- newObjectName_i The new name for the file or folder.
- Outputs:
- Notes:
- An error will be returned if another file or folder exists in the
- same folder as sourceObjectRef_t with the name newObjectName_i.
- */
- /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C a p a b i l i t i e s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
- /*
- ****************************************************************************
- PROPERTY ACCESS METHODS
- ****************************************************************************
- */
- /*
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Object Property Simple Values
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- */
- /*
- Function: FSObjectGetOneProperty
- Purpose: Get one property attribute of an object.
- Inputs:
- objectRef_t The object ref.
- property_i The property attribute to get.
- propertySize_i The size of the property buffer specified
- by propertyValue_o
- Outputs:
- property_o The requested property data.
- Notes:
- This function can be used to get the value of a simple property as
- well as other attributes of all properties such as size, type,
- state, etc. The attribute to get is specified by
- property_i->attribute.
-
- Fork property values must be obtained by using the stream or mapped
- file access routines.
- */
- /*
- Function: FSObjectGetInformation
- Purpose: Get a predefined aggregate property set for an object.
- Inputs:
- objectRef_t The object ref.
- infoVersion_i The version of the FSObjectInformation data record
- specified by objectInfo_o.
- Outputs:
- objectInfo_o The aggregate property data (optional).
- objectName_o The name of the specified object (optional).
- Notes:
- Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
- version of the FSObjectInformation record. infoVersion_i is ignored
- if objectInfo_o is omitted.
-
- objectName_o, if specified, must reference a preinitialized persistent
- TextObject of sufficient size to contain the object's name.
- */
- /*
- Function: FSObjectGetVolumeInformation
- Purpose: Get a predefined aggregate property set for a volume object.
- Inputs:
- volumeItemRef_t The object ref of a file or folder on the volume or
- the volume itself.
- infoVersion_i The version of the FSObjectInformation data record
- specified by volumeInfo_o.
- Outputs:
- volumeInfo_o The aggregate volume property data (optional).
- volumeObjectRef_o The object ref of the volume (optional).
- volumeName_o The name of the volume (optional).
- Notes:
- Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
- version of the FSObjectInformation record. infoVersion_i is ignored
- if volumeInfo_o is omitted.
-
- volumeName_o, if specified, must reference a preinitialized persistent
- TextObject of sufficient size to contain the volume's name.
-
- This function is functionally equivalent to FSObjectGetInformation when
- the target object ref is the volume's object ref.
- */
- /*
- Function: FSObjectSetOneProperty
- Purpose: Set one property attribute of an object.
- Inputs:
- objectRef_t The object ref.
- property_i The property attribute to set.
- propertySize_i The size of the property buffer specified
- by propertyValue_i.
- propertyData_i The new property data.
- Outputs:
- Notes:
- Fork property values must be changed by using the stream or mapped
- file access routines.
- */
- /*
- ============================================================================
- Stream-based Access Method
- ============================================================================
- */
- /*
- Function: FSStreamClose
- Purpose: Close a stream previously opened with FSStreamOpen or FSStreamOpenWithConstraints.
- Inputs:
- stream_t The stream to close.
- Outputs:
- Notes:
- Any data written to the stream is flushed (written by the File Manager) before the
- stream is closed. The FSStreamObjID, stream_t, may no longer be used. Any resources
- allocated by the File Manager for use by this stream will be disposed.
- */
- /*
- Function: FSStreamFlush
- Purpose: Any data written to the stream will be written by the File Manager.
- Inputs:
- stream_t The stream to flush.
- Outputs:
- Notes:
- Stream data may still reside in the File Manager's caches, but any changes will have
- been written out by the File Manager. Note that the underlying device's driver, or
- the device itself, may cache some data, so the File Manager cannot guarantee that
- all data has actually been written to the underlying media.
-
- Other information about the object (such as its modification date) might not be flushed
- by this call, though any volume-level data needed to access the stream will be.
-
-
- */
- /*
- Function: FSStreamGetAbsoluteEOF
- Purpose: Get the logical end-of-file of an open file fork.
- Inputs:
- stream_t The target stream.
- Outputs:
- currentEOF_o The logical end-of-file of the specified
- stream.
- Notes:
- */
- /*
- Function: FSStreamGetMark
- Purpose: Returns the current mark (position offset) for a stream.
- Inputs:
- stream_t The stream.
- Outputs:
- currentMark_o Current offset in the stream, stream_t.
- Notes:
- This call returns the offset from the start of the file that would be
- equivalent to using a FSForkPositionDescriptor whose positionOffset is
- 0, and whose positionMode is kFSFromMark. A stream's mark is set to
- the byte following the last read or write, or via FSStreamSetMark.
- */
- /*
- Function: FSStreamOpen
- Purpose: Open a file fork for stream access.
- Inputs:
- fileObjectRef_t The object ref of the file to open.
- fork_i The fork to open.
- Outputs:
- stream_o The new stream ID.
- Notes:
- The only allowable values for fork_i are kFSDataFork and
- kFSResourceFork.
-
- FSStreamOpen attempts to open the fork with exclusive read/write
- access. If the file is locked or is open on another stream with
- conflicting access constraints, then an error is returned. Use
- FSStreamOpenWithConstraints() to specify particular access
- constratins.
- */
- /*
- Function: FSStreamSetAbsoluteEOF
- Purpose: Set the logical end-of-file of an open file fork.
- Inputs:
- stream_t The target stream.
- eof_i The new logical end-of-file of the stream.
- Outputs:
- Notes:
- If there is not enough space on the volume to set the EOF of
- the fork specified by stream_t to eof_i, then the EOF is not
- changed and an error is returned.
- */
- /*
- Function: FSStreamSetMark
- Purpose: Sets the current mark (position offset) for a stream.
- Inputs:
- stream_t The stream.
- newPosition_i The new position of the stream's mark.
- options_i
- Outputs:
- originalMark_o The stream's mark, before being changed (relative
- to the start of the stream).
- currentMark_o The new mark, relative to the start of the stream.
- Notes:
- A stream's mark is usually used for sequential access to a stream,
- or to position relative to the ending position of the last operation
- on a stream. This call lets you explicitly set the mark for future
- operations that will operate relative to the current mark.
-
- If kFSMarkPinToEOF is set in options_i, and the new position specified
- by newPosition_i would exceed the current end of the stream (also known
- as End Of File or EOF), then the mark will be set to the EOF and E_NoError
- is returned. Otherwise, an error will returned. The mark may never be
- set past the end of the stream.
-
-
- */
- /*
- Function: FSStreamSimpleRead
- Purpose: Read data from an open stream.
- Inputs:
- stream_t The target stream.
- requestLength_i The number of bytes to read from the fork.
- position_i The starting position for the read operation
-
- Outputs:
- data_o The address of a buffer to the read bytes.
- actualLength_o The actual number of bytes read from the file (optional).
- currentMark_o The mark position within the stream after the
- read operation (optional)
- Notes:
- The stream mark is always positioned after the last byte read after all
- calls to FSStreamSimpleRead().
-
- If an attempt is made to read beyond the logical EOF of the fork, then
- the mark is set at the logical EOF of the file, actualLength_o contains
- the actual number of bytes read, and an error is returned.
- */
- /*
- Function: FSStreamSimpleWrite
- Purpose: Write data to an open stream.
- Inputs:
- stream_t The target stream.
- requestLength_i The number of bytes to write to the fork.
- data_i The address of a buffer contating the data to write.
- position_i The starting position for the write operation
-
- Outputs:
- actualLength_o The actual number of bytes written to the file (optional).
- currentMark_o The mark position within the stream after the
- read operation (optional)
- Notes:
- The stream mark is always positioned after the last byte written after all
- calls to FSStreamSimpleWrite().
-
- If an attempt is made to write beyond the logical EOF of the fork, then
- the EOF is moved to the byte following the last written byte.
- */
- /*
- ============================================================================
- Memory-mapped Access Method(Backing Store Requests)
- ============================================================================
- */
- /*
- Function: FSMappedFileClose
- Purpose: Closes an access path to a file used for backing store.
- Inputs:
- backingStore_t The backing store object.
- Outputs:
- Notes:
- Basically the same as FSStreamClose, but for a backing store.
-
- All data written to this backing store (by writing to pages backed by
- this store) will be flushed (written) by the File Manager.
- */
- /*
- Function: FSMappedFileFlush
- Purpose: Any data written via the backing store will be written by the File Manager.
- Inputs:
- backingStore_t The backing store to flush.
- Outputs:
- Notes:
- Data may still reside in the File Manager's caches, but any changes will have been
- written out by the File Manager. Note that the underlying device's driver, or the
- device itself, may cache some data, so the File Manager cannot guarantee that all
- data has actually been written to the underlying media.
-
- Other information about the object (such as its modification date) might not be flushed
- by this call, though any volume-level data needed to access the fork data will be.
- */
- /*
- Function: FSMappedFileGetAbsoluteEOF
- Purpose: Return the EOF (length) of the fork being accessed by the given backing store.
- Inputs:
- backingStore_t The backing store used to access the fork.
- Outputs:
- currentEOF_o The size, in bytes, of the fork.
- Notes:
- Since access to a fork via a backing store (i.e. memory mapped file access) is
- accomplished by directly accessing memory pages, the virtual memory system must
- read and write entire pages. If the last page is modified, the entire page is
- written, resulting in the fork size being rounded up to a multiple of a page size.
- Similarly for access to pages beyond the fork's EOF.
-
- This call returns the current EOF (length) of the underlying fork. This may be
- set implicitly by writing to backed pages, or by using the FSMappedFileSetEOF
- call. It may also be changed by streams opened to the same fork.
- */
- /*
- Function: FSMappedFileOpen
- Purpose: Open a file fork for memory mapped access.
- Inputs:
- fileObjectRef_t The object ref of the file to open.
- fork_i The fork to open.
- Outputs:
- backingStore_o The backing store used to access the fork.
- Notes:
- The only allowable values for fork_i are kFSDataFork and
- kFSResourceFork.
-
- FSMappedFileOpen attempts to open the fork with exclusive read/write
- access. If the file is locked or is open on another stream with
- conflicting access constraints, then an error is returned. Use
- FSMappedFileOpenWithConstraints() to specify particular access
- constratins.
- */
- /*
- Function: FSMappedFileSetAbsoluteEOF
- Purpose: Sets the EOF (length) of the fork being accessed by the given backing store.
- Inputs:
- backingStore_t The backing store used to access the fork.
- eof_i The new length (EOF) of the fork.
- Outputs:
- currentEOF_o The new size, in bytes, of the fork.
- Notes:
- Since access to a fork via a backing store (i.e. memory mapped file access) is
- accomplished by directly accessing memory pages, the virtual memory system must
- read and write entire pages. If the last page is modified, the entire page is
- written, resulting in the fork size being rounded up to a multiple of a page size.
- Similarly for access to pages beyond the fork's EOF.
-
- This call allows the EOF to be explicitly set for a fork being accessed via a
- backing store. Any data beyond the EOF will not actually be written to the fork.
- The File Manager has no way to detect whether access to pages occurs beyond the
- EOF; it is a programming error to access bytes beyond the EOF via a backing store.
-
- This call would typically be used when a fork has been memory mapped to enable
- convenient access to a file's data structures as if it were completely in memory.
- You would make all changes to the data structures, then use this call to indicate
- the number of bytes that are valid and should be written to the fork.
- */
- /*
- ****************************************************************************
- NAVIGATION & ENUMERATION
- ****************************************************************************
- */
- /*
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Object Iteration
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- */
- /*
- Function: FSObjectIterateOnce
- Purpose: Iterate to the next object in the current container and get
- aggregate property information.
- Inputs:
- iterator_t The object iterator.
- objectInfoVersion_i The version of the FSObjectInformation data record
- specified by objectInfo_o.
- Outputs:
- objectInfo_o Aggregate property information about the current
- iterator object (optional).
- objectRef_o The object ref of the current iterator object (optional).
- objectName_o The name of the current iterator object (optional).
- Notes:
- Use kFSInfoCurrentReleasedVersion for infoVersion_i to specify the latest
- version of the FSObjectInformation record. infoVersion_i is ignored
- if objectInfo_o is omitted.
-
- objectName_o, if specified, must reference a preinitialized persistent
- TextObject of sufficient size to contain the object's name.
-
- If the iterator has reached the end of it's current container, then an
- exception will be returned.
- */
- /*
- Function: FSObjectIteratorChangeCurrentScope
- Purpose: Move an object iterator into or out of a container.
- Inputs:
- iterator_t The object iterator.
- movement_i The direction to move: into or out of a container.
- Outputs:
- Notes:
- If movement_i is kFSObjectEnter, then the iterator must be positioned on
- an object that is capable of containing other objects; it does not need to
- actually contain any objects at that time. That object will become the new
- current scope of the iterator and it will be in Start Of Iteration state
- (meaning that all objects in the current scope have yet to be returned).
- The iterator will not be positioned on any object.
-
- If movement_i is kFSObjectExit, then the current scope will become the object
- that contains the current scope; the iterator's new position will be the object
- that was the current scope. If the current scope and the outermost scope were
- the same, then the outermost scope will also change to the new current scope and
- E_ExitIteratorScope is returned (so that you realize you will be iterating outside
- of the scope that you used to create the iterator; the iterator remains usable).
-
- Object iterators keep track of all of the objects between the outermost scope and
- the current scope (this is known as the "scope stack"). If any object in the scope
- stack is moved, the iterator is invalidated and will return the error
- E_IteratorScopeException until it has been explicitly fixed (by FSObjectIteratorRecreate)
- or disposed. This call adds or removes objects from the scope stack.
- */
- /*
- Function: FSObjectIteratorCreate
- Purpose: Create an iterator for iterating over objects.
- Inputs:
- outermostScope_t The initial outermost scope and current scope.
- options_i Controls whether the iterator will traverse objects in
- a single container or all embedded (nested) containers.
- Also controls which kinds of objects will be returned.
- Outputs:
- iterator_o The object iterator.
- Notes:
- The outermost scope and current scope of the iterator are set to outermostScope_t.
- The iterator is not positioned on any object, though it is inside outermostScope_t.
- OutermostScope_t must be an object capable of containing other objects (such as the
- Universe, a volume set, a volume, or a folder). The iterator is put into "Start Of
- Iteration" state, meaning that all objects in the current scope have yet to be
- returned.
-
- The File Manager allocates resources and maintains state for every iterator. When
- you have finished using an iterator, you should call FSObjectIteratorDispose to dispose
- of it.
- */
- /*
- Function: FSObjectIteratorDispose
- Purpose: Dispose of an object iterator.
- Inputs:
- iterator_t The object iterator.
- Outputs:
- Notes:
- The File Manager will dispose of the iterator and release any resources
- allocated to the iterator. Further attempts to use the iterator will result
- in an error.
-
-
- */
- /*
- Function: FSObjectIteratorRestart
- Purpose: Place an object iterator in the Start Of Iterator state, in its current scope.
- Inputs:
- iterator_t The object iterator.
- Outputs:
- Notes:
- The iterator is not positioned on any object. The iterator is put into "Start Of
- Iteration" state, meaning that all objects in the current scope have yet to be
- returned.
-
- You would use this call to completely restart iteration within the current scope,
- ignoring any state about objects previously returned in the current scope. The
- outermost scope is not affected. State information about which objects have been
- returned from scopes outside the current scope is unchanged.
- */
- /*
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Object Resolution
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- */
- /*
- Function: FSObjectCreateRef
- Purpose: Get the object ref for a named object in a given container.
- Inputs:
- container_i The object container ref.
- objectName_i The name of the target object.
- Outputs:
- objectRef_o The resulting object ref.
- Notes:
- */
- /*
- Function: FSObjectExchange
- Purpose: Exchange the properties of two objects. Typically used for "safe
- saving", while maintaining an object's persistent reference.
- Inputs:
- object1_i One object.
- object2_i The object to exchange it with.
- Outputs:
- Notes:
- This call is used to allow a "safe save" that preserves an object's
- persistent reference. For example, you might want to save an updated
- set of properties to an object so that any errors while saving result
- in the object being unchanged; but, you also want the object's persistent
- reference to remain unchanged (so that things like aliases still work).
-
- What you would do is create a second object somewhere (in a temporary
- folder, for example). Write out all of the properties, both unchanged
- and changed, to the second object. When done saving, you would call
- FSObjectExchange with both objects; the contents of the two objects get
- swapped in such a way that the original object has the new properties,
- but retains its old persistent reference.
-
-
- */
- /*
- Function: FSObjectGetContainerRef
- Purpose: Get the object ref for the container of a given object.
- Inputs:
- objectRef_i The object of interest.
- Outputs:
- containerRef_o The object ref of the container of
- containerRef_o.
- Notes:
- */
- /*
- Function: FSObjectRefGetFSSpec
- Purpose: Return an FSSpec for an object (suitable for use with the Files API).
- Inputs:
- object_t The object.
- Outputs:
- fSSpec_o An FSSpec that specifies the same object as object_t,
- suitable for use with the Files API.
- Notes:
- This call is intended to be used by code that is required to use both the
- Files API and the FileManager API (or has clients that use both APIs).
- For example, a piece of code may already exist with an API that uses FSSpecs,
- but has been converted internally to use the FSObjectRefs; it would use this
- call to produce an FSSpec as an output for the pre-existing API.
-
- It would be best to provide an API that allows its clients to use FSObjectRefs.
- */
- /**/
- /*
- Function: FSSpecGetFSObjectRef
- Purpose: Return an FSObjectRef for an object specified via an FSSpec.
- Inputs:
- theFSSpec_t An FSSpec for the object.
- Outputs:
- theObject_o An FSObjectRef for the object.
- Notes:
- This call is intended to be used by code that is required to use both the
- Files API and the FileManager API (or has clients that use both APIs).
- For example, a piece of code may already exist with an API that uses FSSpecs,
- but has been converted internally to use the FSObjectRefs; it would use this
- call to take an input FSSpec and convert it to an FSObjectRef to use internally;
- the FSObjectRef would then be disposed before completing the call.
-
- It would be best to provide an API that allows its clients to use FSObjectRefs.
- */
- /*
- Function: FSVolumeGetInformation
- Purpose: Get the volume object ref for a given volume object ID.
- Inputs:
- volume_t The volume's object ID.
- Outputs:
- object_o The volume's object ref.
- Notes:
- */
- #endif
- #endif
-
- #endif /* __SOMIDL__ */
-
- #endif /* __FILEMANAGER_IDL__ */
-
-